package com.yugao.fintech.antelope.base.tenant.core;

import java.lang.annotation.*;

/**
 * 数据隔离注解
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataIsolation {
    /**
     * 过滤租户
     */
    boolean filterTenant() default false;

    /**
     * 是否过滤主租户字段, 如果有的话, 根据业务场景可能会在主租户下管理子租户数据, 这样的话
     * 在主租户中过滤数据会用到 main_tenant_id 字段, 子租户过滤数据只会用到tenant_id
     */
    boolean filterMainTenant() default false;

    /**
     * 是否关联用户, 目前唯一的用途是, 删除用户时候, 会连带用户关联的数据都将被删除, 如果为false表明当前
     * 表中没有和某个用户发生关联, 即不做任何处理, 关联的用户字段名目前仅支持 user_id
     */
    boolean associatedUser() default false;

    /**
     * 表名
     */
    String tableName();
}
